package com.codegenerate.demo.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.codegenerate.demo.config.R;
import com.codegenerate.demo.dto.SysClassDto;
import com.codegenerate.demo.entity.SysClass;
import com.codegenerate.demo.service.impl.SysClassServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;


@RestController
@RequestMapping("/sysClass")
public class SysClassController {
    @Autowired
    SysClassServiceImpl sysClassService;


    @PostMapping("/list")
    R<List<SysClass>> list(@RequestBody SysClassDto sysClassDto){
        Page<SysClass> page = sysClassService.page(
                sysClassDto.buildPage(),sysClassDto.dto2entity().getQueryAll()
        );
        var list = page.getRecords();
        //region:
        //endregion
        for (int i = 0; i < list.size(); i++) {
            var one = list.get(i);
            one.setHaveNext(sysClassService.exitHashNext(one.getId()));
        }
        return R.ok(list)
                .setCount(page.getTotal());
    }

    @GetMapping("/getItem")
    R<SysClass> getItem(int id) {
        return R.ok(sysClassService.getById(id));
    }

    @PostMapping("/add")
    R<Boolean> add(@RequestBody  SysClassDto sysClassDto){
        var entity=sysClassDto.dto2entity();
        //设置 默认
        SysClass.setDefaultValue(entity);
        return R.ok(sysClassService.save(entity));
    }


    @PostMapping("/update")
    R<Integer> update(@RequestBody  SysClassDto sysClassDto){
        sysClassDto.validateUpdate();
        return R.ok(sysClassService.getBaseMapper().update(null, sysClassDto.dto2entity().getUpdateWrapper()));
    }

    @GetMapping("/del")
    R<Boolean> del(@RequestParam("id") int id) {
        return R.ok(sysClassService.removeById(id));
    }
}